home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1997 / MacHack 1997.toast / Hacks / Hacks ’96 / PredatorPrey / MainMenu.c < prev    next >
Text File  |  1996-06-22  |  5KB  |  231 lines

  1. /* MainMenu.c */
  2. /* Created 930522 09:34 AM by AppMaker */
  3.  
  4. #include <Types.h>
  5. #include <Quickdraw.h>
  6. #include <Controls.h>
  7. #include <Dialogs.h>
  8. #include <Events.h>
  9. #include <Lists.h>
  10. #include <Menus.h>
  11. #include <TextEdit.h>
  12. #include "Globals.h"
  13. #include "ResourceDefs.h"
  14. #include "Miscellany.h"
  15. #include    "PredatorPrey.h"
  16. #include "FileM.h"
  17. #include "EditM.h"
  18.  
  19.  
  20. /*#include "ViewM.h"*/
  21.  
  22. #include <Desk.h>
  23. #include <ToolUtils.h>
  24. #include "MainMenu.h"
  25.  
  26.  
  27. static void Enable            (short            itemNr,
  28.                              Boolean        enabled);
  29. static void EnableTitle        (MenuHandle        menu,
  30.                              Boolean        enabled);
  31. static void DoApple         (short             itemNr);
  32.  
  33. void    mainMenu_seg() {}        /*  for reference in "UnloadSeg()" calls    */
  34.  
  35. /*----------*/
  36. void InitTitles (void)
  37. {
  38.     /*InitFileM ();*/
  39. /*    InitEditM ();*/
  40. /*    InitViewM ();*/
  41.     
  42. } /*InitTitles*/
  43.  
  44. /*----------*/
  45. /*void LoadMenus (void)*/
  46. /*{*/
  47. /*    AppleMenu    = GetMenu (AppleID);*/
  48. /*    FailNilResource ((Handle)AppleMenu);*/
  49. /*    AddResMenu (AppleMenu, 'DRVR');*/
  50. /*    FileMenu    = GetMenu (FileID);*/
  51. /*    EditMenu    = GetMenu (EditID);*/
  52. /*    FormulasMenu    = GetMenu (FormulasID);*/
  53. /*    OptionsMenu    = GetMenu (OptionsID);*/
  54. /*    ViewMenu    = GetMenu (ViewID);*/
  55. /*    */
  56. /*    InsertMenu (AppleMenu, 0);*/
  57. /*    InsertMenu (FileMenu, 0);*/
  58. /*    InsertMenu (EditMenu, 0);*/
  59. /*    InsertMenu (FormulasMenu, 0);*/
  60. /*    InsertMenu (OptionsMenu, 0);*/
  61. /*    InsertMenu (ViewMenu, 0);*/
  62. /*    */
  63. /*    DrawMenuBar ();*/
  64. /*}*/ /*LoadMenus*/
  65.  
  66. /*----------*/
  67. /*static void DoAbout (void)*/
  68. /*{*/
  69. /*    short            itemNr;*/
  70. /**/
  71. /*    itemNr = Alert (AboutID, nil);*/
  72. /*}*/ /*DoAbout*/
  73.  
  74.  
  75. /*----------*/
  76. /*static void DoApple (short     itemNr)*/
  77. /*{*/
  78. /*    Str255            name;*/
  79. /*    short            refNum;*/
  80. /**/
  81. /*    switch (itemNr) {*/
  82. /*    case AppleAbout:*/
  83. /*            DoAbout ();*/
  84. /*        break;*/
  85. /*    */
  86. /*        default:*/
  87. /*                GetItem (AppleMenu, itemNr, name);*/
  88. /*                refNum = OpenDeskAcc (name);*/
  89. /*            break;*/
  90. /*    } /*switch»*/
  91. /*}*/ /*DoApple*/
  92.  
  93. /*----------*/
  94. void DoMenu (long        menuChoice)
  95. {
  96.     short            menuID;
  97.     short            itemNr;
  98.  
  99.     menuID = HiWord (menuChoice);
  100.     itemNr = LoWord (menuChoice);
  101.  
  102.     switch (menuID) {
  103.     case 0:
  104.             /*Do nothing*/;
  105.         break;
  106. /*    case AppleID:*/
  107. /*            DoApple (itemNr);*/
  108. /*        break;*/
  109. /*    case FileID:*/
  110. /*            DoFile (itemNr);    /*    FileM.c    »*/
  111. /*        break;*/
  112.     case EditID:
  113.             DoEdit (itemNr);
  114.         break;
  115. /*    case FormulasID:*/
  116. /*            DoFormulas (itemNr);    /*    FormulasM.c    »*/
  117. /*        break;*/
  118. /*    case OptionsID:*/
  119. /*            DoOptions (itemNr);*/
  120. /*        break;*/
  121. /*    case ViewID:*/
  122. /*            DoView (itemNr);*/
  123. /*        break;*/
  124. /*    */
  125.     } /*switch*/
  126.  
  127.     HiliteMenu (0);
  128. } /*DoMenu*/
  129.  
  130. /*----------*/
  131. MenuHandle        menu;
  132. Boolean            menuBarChanged;
  133.  
  134. /*----------*/
  135. static void Enable    (short        itemNr,
  136.                      Boolean    enabled)
  137. {
  138.     if (enabled) {
  139.         EnableItem  (menu, itemNr);
  140.     } else {
  141.         DisableItem (menu, itemNr);
  142.     }
  143. } /*Enable*/
  144.  
  145. /*----------*/
  146. static void EnableTitle    (MenuHandle        menu,
  147.                          Boolean        enabled)
  148. {
  149.     if (enabled != ((**menu).enableFlags & 1)) {
  150.         menuBarChanged = true;
  151.     }
  152.     if (enabled) {
  153.         EnableItem  (menu, 0);
  154.     } else {
  155.         DisableItem (menu, 0);
  156.     }
  157. } /*EnableTitle*/
  158.  
  159. /*----------*/
  160. void UpdateMenus (void)
  161. {
  162.     WindowPeek        frontPeek;
  163.     Boolean            isFront;            /*is there a front window?*/
  164.     Boolean            isCur;                /*is there a current window?*/
  165.     Boolean            isDirty;            /*is it dirty?*/
  166.     Boolean            hasFile;            /*does it have a file?*/
  167.     Boolean            isSelected;            /*is anything selected?*/
  168.     Boolean            isDesk;                /*is the front window a desk acc?*/
  169.     Boolean            isText;                /*is there a current text field?*/
  170.     Boolean            isScrap;            /*is there any scrap?*/
  171.     menuBarChanged = false;
  172.  
  173.     isFront        = (FrontWindow () != nil);
  174.     isCur        = (curWindow != nil);
  175.     isDirty     = false;
  176.     hasFile     = false;
  177.     isSelected    = false;
  178.     if (isCur) {
  179.         isDirty        =  cur->dirty;
  180.         hasFile        = (cur->fileNum != 0);
  181.     }
  182.  
  183.     isDesk = false;
  184.     if (isFront) {
  185.         frontPeek    = (WindowPeek) FrontWindow ();
  186.         isDesk        = (frontPeek->windowKind < 0);
  187.     }
  188.     isText        = isCur;
  189.     isScrap        = false;
  190.     if (isText) {
  191.         /*if(cur->text != nil)*/
  192. /*        {*/
  193. /*            isSelected    = ((**(cur->text)).selStart != (**(cur->text)).selEnd);*/
  194. /*            isScrap        = (TEGetScrapLen () > 0);*/
  195. /*        }*/
  196. //        if (cur->rText != nil)
  197. //        {
  198. //            isSelected    = ((**(cur->rText)).selStart != (**(cur->rText)).selEnd);
  199. //            isScrap        = (TEGetScrapLen () > 0);
  200. //        }
  201.     }
  202.  
  203. /*    menu = FileMenu;*/
  204. /*    Enable (FileClose,        isFront);*/
  205. /*    Enable (FileSave,        isDirty);*/
  206. /*    Enable (FileSaveAs,        isCur);*/
  207. /*    Enable (FileRevert,        isDirty);*/
  208.     
  209.     menu = gEditMenu;
  210.     if (isFront) {
  211.         Enable (EditUndo,        isDesk);
  212.         Enable (EditCut,        isDesk || isSelected);
  213.         Enable (EditCopy,        isDesk || isSelected);
  214.         Enable (EditPaste,        isDesk || isScrap);
  215.         Enable (EditClear,        isDesk || isSelected);
  216. /*        Enable (EditSelectAll,    isText);*/
  217. /*        Enable (EditCreatePublisher,    sysConfig.hasEditionMgr && isSelected);*/
  218. /*        Enable (EditSubscribeTo,        sysConfig.hasEditionMgr && (!isSelected));*/
  219. /*        Enable (EditSubscriberOptions,    false /* (publisherSelected || subscriberSelected) »);*/
  220.         
  221.     }
  222.     EnableTitle (gEditMenu,     isFront);
  223.     
  224.     
  225.     if (menuBarChanged) {
  226.         DrawMenuBar ();
  227.     }
  228. } /*UpdateMenus*/
  229.  
  230. /* MainMenu */
  231.